SAP HR Schema 详解 您所在的位置:网站首页 sap hr 考勤schema SAP HR Schema 详解

SAP HR Schema 详解

2023-01-10 23:57| 来源: 网络整理| 查看: 265

SAP HR Schema 详解

2022-04-17 16:36:44

SAP HR Schema 详解

[推荐][原创]SAP HR Schema 详解(一)

一、Payroll schema基础

1、Schema 和Function

在SAP薪酬中,Function为薪酬计算提供了逻辑公式。Function执行一般的过程-如在给定的薪资方法上计算薪酬税,从特定的信息类型中读取工资类型,计算奖金,并保存薪酬计算的结果。SAP薪酬系统中有几十个Function,有些是与国家相关的而有些不是。每个Function在PE04中定义并有文档;在4.5版本以上可以通过PDSY查看Function文档,在早期的版本可以通过RPDSYS00查看。

在SAP HR术语中,一个薪酬Function与一个ABAP Function是不一样的。薪酬Function也包含ABAP代码,但它不像ABAP Function那样执行。薪酬Function在Schema 中被薪酬驱动程序(假定为PRcALcUo)所执行。

Schema 是一系列Function以某种顺序执行的集合-每个Function执行后把结果传给下一个Function。Schema 可以通过PE01被创建和编辑,但是被保存在表T52c0(SAP标准Schema )和表T52c1(用户创建的Schema 和修改SAP标准Schema )。薪酬驱动读取T52c0/T52c1表中的行并依次执行Function。

我们如何跳过保存在表中的薪酬Function而执行ABAP代码来完成工作呢?在t-code PE04中可以看到ABPA代码对应的每个Function。在Schema 中Function名与ABAP Form有关联,如薪酬Function WPBP映射到ABAP form ?fuwpbp?;Function USTAX映射到form ?fuustax?。所以当薪酬驱动执行Schema 时,它从Schema 中取得Function名,然后在名称前加上?FU?,然后执行perform语句。这是一个很简单巧妙的设计。

2、工资类型(wage type)即工资项

在很大程度上,工资类型只是包含一些数据-比率,数字 和/或数量。但是更详细的,一个工资类型有几十个属性用来控制它是如何被操作和处理的。但是在最后,它在薪酬结果数据库中作为一个对象保存成比率,数字和/或数量。

工资类型大多情况下用来保存一个员工薪水中收入的数量、扣除的数额和税收数额。员工的基本工资保存在一个工资类型中,作为一般用途扣除的费用保存在一个工资类型中,他们应征税的工资和税保存在工资类型中。作为员工工资的基本数据元素——工资类型,也同样映射到FI/co账户以记录工资上的借贷,并报告在W-2和税务表格上。

工资类型也保存统计数据-如带薪时期内工作的小时数,在过去的六个月平均的周工资,或分红计算的工资的数量。工资类型保存在几个表中,但是主要是T512W。将有更多的时间花在T512W表的各个方面。

(重要的视图包括:V_512W_D,V_512W_o,V_512W_B等。)

工资类型有三类:模型、技术和用户。

1)模型工资类型是SAP给客户用来作为向导创建他们自己的工资类型的。他们常常以一个字母开始,SAP可能在系统升级或HRSP中添加、删除或更新他们。

2)技术工资类型经常由SAP产生,以’/’开始。他们一般用在薪酬的特定的标准过程中,但你也可以修改他们,SAP可能在升级的过程中或在HRSP中更新他们。所以,如果你曾经修改过一个技术工资类型,那么要在每次升级以后或HRSP以后检查他们,以保证他们还有你需要的属性。并且不要删除任何技术工资类型。

3)用户工资类型一般以数字开始,SAP在升级或HRSP中是不会改变这些工资类型的。或SAP很少在升级或HRSP中改变这些工资类型。用户工资类型是为所有公司特定的工资支付制定的。

3、Rule和operation

我们的一个长期客户曾经创建了一个保存界面的信息叫“薪水Rule”!那些有经验的SAP薪水分析者和顾问立刻看成其中的双层含义和幽默。Rule包含SAP薪水中大多基本的逻辑。其中Schema是Function的集合,Rule是operation的集合。一个operation是一个非常基本的被用来操作工资类型的逻辑。例如,operation MULTI是乘以工资类型中的数字和比率以决定付给员工工资的数目。

operation oUTWP获取一个员工特定的数据并决定如何去处理它。比如,如果工作合同在信息类型1中是UA,那么执行?x?,如果是UB,执行?y?,

可以通过t-code PE04和PDSY查看operation,也可以通过PE02编辑operation。Function对应的ABAP form是以‘fu’开始,operation对应的ABAP form是以?op’开始。比如,operationMULTI,将有ABAP form ?opmulti?。同Schema 一样,Rule保存在表中,Rule被保存在表T52c5中。

有多年计算机系统工作经验的SAP高级顾问们常在发现工资Rule和编程大型机汇编语言的类似性。然而当operation被正确使用时功能强大,但这没有什么好神奇的。

希望我们这个简短的介绍是有意义的。下一篇SAP工资技术文档中我们将更深入探讨用在SAP的工资Schema 中的公共Function。

Function最多能有4个参数,SAP文档将告诉你每个参数的用法。通过PDSY和PE04能看到每个Function和operation。 coPY

这与ABAP和编程语言中的?include?相同。当工资执行时,copy是插入包含在参数1中的Schema 。好的Schema 配置风格和好的编程风格是一样的-将公共使用的逻辑放在?include?中,这样能被用于多个地方,同时也增加可读性。

BLocK

在4.0版中,Schema 日志是放在树状结构中的。BLocK BEG开始一个节点,BLocK EnD结束一个节点。在BEG和EnD之间是包含在节点中。BLocK BEG/EnD能被多层嵌套。同时,适当的放置BLocK BEG/EnD,使日志更方便读。

IF/ELSE/EnDIF 对

IF Function,有2种方法说明真/假条件。SAP有几个内置的条件可以在参数2(Schema U000中的IF nAMc)中使用。你同时也能在参数1中说明一个定制的Rule,并且在Rule中执行你任意想要的逻辑。在Rule中,使用operation SconD为IF Function设置真/假转换。

Pxxxx 工资驱动和Schema 从许多信息类型中读取数据并处理数据。一般是以P和四位数字命名的信息类型来执行。所以,P0014读取并处理从信息类型14来的数据,P0168从信息类型168处理人生保险计划,P2010从信息类型2010中读取附加工资。许多Function,但并非所有的Function,允许你用工资Rule进一步精练此过程。例如,Schema UAP0表明P0014被RuleU011处理过。Function P0168是没有使用Rule的Function之一(在一些老的版本中有使用),而是在参数中说明operation(见Schema UBE1)。

有些信息类型在工资中被使用,但没有Pxxx Function。这些包括信息类型207,208,209和210,他们都在主税款Function USTAX中被读取并处理。信息类型0,1,7和8被Function WPBP处理。

PIT

PIT是Process Input Table的首字母简写,它也是工资中最常用功能最强大的Function之一。当工资类型被Pxxx Function读入工资时,他们被保存在称为IT(Input Table)的内部表中。PIT通过内部表循环,并应用包含Rule中的逻辑。所以对于IT中的每个工资类型,它都将从Rule中申请一个逻辑。

PIT的目标是将工资类型从IT中移出,移入到RT(Result Table)中。大多数情况下,被PIT调用的Rule会改变工资类型的一些属性然后把他们从IT中转移到RT中。工资类型也能留在IT中并移到表中去。在说明operation是如何工作的时候我们再解释这种可能性。

PIT的一个例子是在Schema UAL0中-PIT X023。当工资驱动到达Schema 的这点时,PIT将遍历IT中的每个工资类型,RuleX023告诉它做什么事是取决于工资类型在过程类20中的值。值为3,4,5,6,9和B使将把工资类型移到RT中,而1,7和8是将工资类型留在IT中,值2没有任何操作,但本质上其实是将工资类型从IT中清除。

PRT

PRT是Process Results Table的缩写。虽然大多数工资类型处理发生在PIT,也有几种情况当你想处理工资类型时已经被转移到RT中。PRT工作原理同PIT,通过RT循环,同时从Rule中申请逻辑。

在Schema UTX0中,PRT被用来处理已经在RT中的税款工资类型。Function UTX0(US 税款Function)直接返回它的工资类型给RT,所以任何一个在税款工资类型中的处理都要PRT Function来完成。

AcTIo

AcTI0Function处理工资Rule,但是它不通过工资类型表来循环,但它在不同的工作地点/基础工资记录间循环,并挨个处理它们的Rule。例如,假设员工在当前带薪时期有2个信息类型1个记录,AcTI0将有2条记录要循环。

UTX0 Schema 是AcTI0使用RuleUWH1计算带薪时期工作的小时数的一个好的例子。

像Function一样,operation的帮助文档也能通过PDSY和PE04找到。operation能被放在2个不同的组-他们分布用来决策和操作工资类型。有些operation刚好适用这2个组。

操作工资类型

在Rule中使用工资类型就好像在ABAP中使用内表。Function通过把表的每一行一次性都放在?头?空间来循环调用Rule(PIT,PRT,P0014或)。在头空间使用工资类型,完成以后在把它加回表中。

MULTI, DIVID

这些operation让你将工资类型中的两个字段相乘并将结果保存在第三个字段中。能使用的字段是AMT,RTE和nUM。MULTI RnA将用一个数乘以比率并将结果保存在amount字段。DIVID AnA将用一个数除amount字段并将结果保存回amount字段。

nUM, RTE and AMT

这些是非常基本的也很强大的operation,它们能操作他们各自字段的内容。很大情况会用到这些operation,F1帮助文档是很有用的。基本情况下,设置值nUM=1 或者AMT=2.50,但这不是一个好的实践方法。而使用常数-在表T511K中创建名叫ZnUM的常数,并使nUM=KZnUM(把number字段的值赋给常数ZnUM)。因为常数是根据日期有效的,而Rule不是,这样当数值需要改变时使你更灵活地改变。

你可以设置工资类型的头的字段等于另外一个工资类型中对应的字段-AMT=E9XXX是使amount等于RT工资类型9XXX中的amount字段。当且仅当IT中的9XXX小于amount域的值时,AMT

最后,你可以使用值上的算法。RTE*100是rate字段的内容乘以100并把结果保存回rate字段。AMT*KZnUM是amount字段被常数ZnUM中的值相乘,ZnUM中的值可以是任意数。

ADDWT

至此,我们已经使用MULTI,DIVID,AMT,RTE和nUM设置我们的工资类型的值。ADDWT将头中的工资类型不改变值或改变值后移到的表。ADDWTE*是不改变工资类型的数值加到RT中。ADDWTE9XXX将它重命名为9XXX然后转移到RT中。用F1帮助文档将告诉你所有这些你能转移到的表。

ELIMI and RESET

裂片是用于将工资类型连接到工资中表的属性。有时你在做某个Rule时不得不移除某个裂片-这就是ELIMI做的(ELIMInate 裂片)。在删除一个工资类型的裂片后,你可以使用RESET重新保存他们。一般来说,你应该避免删除裂片-因为这可能导致比率和报表出错。所以使用和测试时要小心。

FILLF

这个简单的operation能重置wagetype域的值。例如,FILLF A是在Rule第一次被调用时将amount重置回原来的值。

这里你将把把所有这些operation集合在一起在基本工资的基础上计算固定比例的扣除数(有几种方法计算,这里仅介绍一种)。假设基础工资在IT值,比率作为一个完整的数保存在常数ZnUM中,你制定了一个Rule包含了工资类型****和基础工资,在这个例子中用?oBAS?。扣除的部分将是4XXX。所以,在这个Schema 中我们将在RuleZ001中执行一个PIT:PIT Z001。在Rule中:

工资类型****:ADDWT *(如果它不是oBAS,我们就不改变它)。

Rule类型oBAS:ADDWT*, nUM=KZnUM,MULTI AnA, AMT/-100, ADDWT 4XXX(将oBAS传到输出表,这样我们就不会丢失它了,设置number域等于常数ZnUM,用amount乘以number,因为我们将百分比作为一个完整的数保存并且我们希望这个扣除数是负数,所以用-100除amount,并把结果作为工资类型4XXX保存。

决策

很多次我们只需在某种条件存在时执行某个动作-比如,我们只想为某种员工计算扣除数4XXX。在这种情况下,我们必须选择什么时候执行这个动作。

Decisions将结果放入称为变量的键中-这就象一个带有通配符的描述。如果我们把公司代码放在一个变量键只,那么含有1234的行将为公司1234执行,含有2***的行将为任何以2打头的公司执行,而****将为所有任意匹配的公司执行。

oUTWP

这个operation使我们在基于工资中的WPBP表中的各种数据元素做出决策-粗略地只有信息类型0和1数据。通过F1帮助文档,可以看到许多的元素。例如,通过oUTWP coMPY可以查看公司代码,它把company code域的内容放到变量键中。

VAKEY

像oUTWP这个operation是把某个数据放在变量键中,可以看F1帮助查看各种可能性。

nUM, RTE and AMT

作为decisions,他们又出现在这里。如果用AMT?0,它将amount域的值与0比较然后返回>,

VWTcL

这个operation为当前的工资类型返回某个处理类的值。例如,VWTcL 93将处理类93的值放在变量键里。RuleX023是如何使用处理类值的一个好例子。

在前面的例子中,我们给每个基本工资类型oBAS的员工计算扣除数4XXX。使用oUTWP你可以决定只计算在某个人事范围/子范围或员工子组的员工。假设你想计算在信息类型14或15已经进入工资类型4XXX的员工。假设已经进入工资类型,信息类型的number域也有要求的数据,你需要做以下步骤:

工资类型oBAS:ADDWT *, nUM=4XXX, 在nUM?0做选择,

IF:如果是=(等于),就什么也不做,

ELSE:否则(_*条件)执行nUM=KZnUM,MULTI AnA, AMT/-100, ADDWT 4XXX.这取决于在这点你的工资类型裂片是如何组织的,你可能想在nUM=4XXX之前ELIMI R,在ADDWT 4XXX之前RESET R。

正如前面提到的,这仅仅是隔靴搔痒。当配置薪酬时你不能仅关注某个问题,而应该理解所有的部分并力求最好的配置。你有许多的方法组合Function,operation,处理类和常数等。SAP已经为薪酬创建了灵活的功能强大的配置模型。当使用正确时,许多工作就已经完成好了,当使用不正确时,发现它会引起困惑并且导致不稳定。所以要好好的测试你的配置并以文档形式记录你的配置。

下面是对Schema cn28的部分简单阐述:

BLocK BEG *Payroll schema:cHInA

coM 工资Schema :中国标准

coPY XIn0 初始化工资

coPY cnBD 编辑基本数据(中国)

IF SPRn 特别处理运行??非周期性支付?

RERSH IT 删除IT(删除内表)

EnDIF 到:特别处理运行?

coPY XLR0 导入上一期工资结果

coPY cnT0 工资总额(读入时间数据)

coPY cnAP 导入扣减(0014、0015导入)

coPY cnAL 确定每个月的扣减因子

coPY cnnG 净支付(净工资)计算(中国)

coPY XnA0 累计净支付的值

coPY XRR0 回溯(反算)

coPY Xnn0 净支付/扣减 和 传输

coPY cnEn 最后处理

BLocK EnD *中国 工资核算

Function(Function) BLocK

描述:BLocK Function允许你构造一个工资核算过程日志。在开始和结束标记点中把工资Function按语义顺序聚集在一起,且他们出现在日志中的一个普通节点。

语法:

Function 参数1 参数2 参数3 参数4

FUncTIon BLocK Function名称

参数1 BEG 开始一个语义块

EnD 结束一个语义块

参数2 目前无该参数

参数3 目前无该参数

参数4 目前无该参数

说明:BLocK Function可以被嵌套,在一个子Schema 中,一个结束块必须对应一个开始块

Schema

XIn0 初始化工资数据(国际)

人员计算Schema

重要的信息/事件(开关),哪一些有关工资核算的进一步过程,工资运行开始在这个子Schema 中指定。

结构:

子Schema 由下述步骤组成:

1、 指定程序类型(工资核算或评估)

2、 设置数据库更新开关(YES/no)

3、 必需的信息类型(导入仅仅是schema所需的主数据信息类型)

4、 导入所有时间信息类型

5、 指定检查控制记录PA03(测试或激活生产)

参数1 参数2 参数3 参数4 D

coM 注释:工资发放核算初始化

BLocK BEG 块开始:

PGM ABR 工资发放的程序类型

UPD YES 更新数据库(是/否)

oPT InFT 只使用信息类型的读取

oPT TIME 输入全部的时间信息类型

cHEcK ABR * 核查PA03(生产机去掉 *)

BLocK EnD 块结束 Function

PGM :识别一个工资发放的程序类型

PGM Function给工资核算驱动提供一个工资核算的程序类型信息

不同的Schema允许薪资驱动在不同的时间段里去执行不同的程序,这些工资和评估程序哪一个在工资核算之后运行。

这两个类型说明程序现有的工资数据

如果一个Schema不包含PGM Function,程序是假设(缺省)一个发薪程序。如果一个schema包含多个PGM Function,那么最后一个是有效的。

语法:

参数1

ABR 工资核算

AUS 评估

MIX 工资/评估

SP 特殊运行,这个特殊的仅仅适用于西班牙和奥地利国家的版本

TRn 遗留数据传输

例:如果你想去创建一个工资的Schema PGM (参数1)ABR

UPD:执行数据库更新

FunctionUPD控制在运行工资核算后产生的结果是否保存到数据库或仅仅在当前显示。

参数1作为一个开关在一个schema之初设置

语法:

Function UPD

参数1

no 不更新数据库

YES 更新数据库

参数2

参数3

参数4

例:

如果你想去测试一个工资核素且结果不被更新到数据库UPD (参数1)no

oPT(options):你可以使用oPTFunction去为工资导入信息类型

语法:

参数1:BSI 已过时

coPL 集成成本计划

DEc 小时工资>2位数

EnQ 不再使用

InFT 必需的信息类型(导入仅仅是schema所需的主数据信息类型)

nRc 无回溯核算

TIME 读时间信息类型

必需入口:参数1

注意:

如果你想在工资核算中去处理时间管理数据(如:改变日程表,缺勤等),在你的schema中oPTFunction必需在参数1中包含TIME。

cHEcK:在选择雇员之前/之后核查。

FunctioncHEcK完成两个任务

1) 按照schema类型检查规定的时间(期间)

2) 执行一个整体的检查: Schema

cnBD 中国基础数据

工资子Schema ,子Schema 被主Schema 调用

该子Schema 读取国际总工资计算(核算)所需的全部基础数据(主数据),基础数据接着被打印到工资日志(如果program option=on).

结构:

该子Schema 由以下主要步骤组成:

1、 读取员工姓名(P0001-EnAME)

2、 从以下信息类型中读有关工作中心和基本工资数据

a) 人事事件P0000,

b) 组织分配P0001,

c) 计划工作时间P0007

d) 基本工资P0008

e) 工资维护P0052和

f) 成本分配P0027

3、 检查所需的所有主数据可以被工资驱动的,否则程序被取消。

4、 在工资日志中打印上述基本数据。

FUncTIo 参数1 参数2 参数3 参数4 D

coM 编辑基本数据

BLocK BEG 编辑基本数据

EnAME 从EE(Infotype0001)中确定名字

WPBP 读取工作中心和基础工资数据

P0014 cn14 GEn noAB 为P0014分割WPBP和设置APZnR

DATES 读取详细时间数据

IF SPRn 判读是否为非周期工资运行?

ELSE 周期性工资运行?

P0532 读取(5)保险数据

P0530 读取公积金数据

P0533 读取人事档案中的服务费

EnDIF 结束IF语句块

P0531 读取所得税数据

Gon 如果数据完整,继续…

BLocK EnD 结束块----

A previous employer table VAG 先前雇主表

c cumulation table cRT 累积表

D difference table DT 差异表

E results table RT 结果表

G Gross results table GRT 总结果表

H old results table AIT 旧结果表

I Input table IT 输入表

L Results table last payroll LRT 上一工资结果表

M Incentive wages results LS 计件工资结果表

n Loan Lo 借出(仅仅可以再function P0045使用)

o see blank above

U Difference table DFT 差异表

W wage maintenance table

X cumulated tax table ScRT 累积税表

Z Table of time wage types ZL 计时工资表

& Variable table VAR 可变表

二、工资核算基础

1 工资项(wage type)的分类 1.1 主要工资项 Primary wage tapes

主要工资项也称为对话工资项由用户前台手工输入,或通过系统设定的时间来产生。通过复制系统标准的技术工资项(模型工资项,以M开头,尽量选择接近的进行复制)来产生主要工资项。

primary wage tapes 前台输入

1.dialog wage types 前台维护(0008、0014、0015、0267)

2.time wage types 前台可以输入也可以不输入

3.others:absences(包含在time wage types里面)

使用程序:RPUTRBK0可以修改0003里面的字段状态

1.2 次要工资项 Secondary wage types

次要工资项又称为技术工资项。每个系统内的技术工资项都包含特定含义,用户一般不可以修改,用户可以复制系统标准的技术工资项,生成自己需要的技术工资项。

secondary wage tapes 后台工资项,不能维护,也叫技术工资项

/0(工资标准)打头的工资项存放小时工资和月工资,同理工资标准也可以放到里面,自定义/080-/089;/090-/099

V_512w_t工资项文本表

/1(累计工资项)打头存放合计,/101应发合计,/103应税合计,/110中国不用,存放法定扣除,/150 月社保公积金标准。/151基本工资总计,/180-/199用户自定义

/2(平均基)平均工资、平均加班,自定义平均期间

/8(折算因子):存放的值=实际工作日/计划工作天数

/3(社保扣减)

/4(应税项目) /401计税基数 、/402税率基数(找税率)、/403工资税收 、/404奖金税收、 /498应征税的奖金

/A(回溯流出项)

/Z(回溯流入项)A 与Z配套出现

2 工资计算过程

1读取基本数据:读0008、0009等信息

2读取上月工资结果:因为上月工资会影响本月工资

3时间数据处理

读考勤数据 生成考勤工资项

评估考勤工资项:计算考勤工资项相关的薪资 4导入经常性支付/扣减、附加支付/扣减

5因子

折减 基本工资或经常性支付 决定过帐工资项 6法定支付/扣减

7净支付/扣减

8决定银行实际支付

用户主要修改1-5步骤,6-8很少需要更改

3 SAP 薪资概念 The SAP payroll concepts 1、 Identity the sap payroll concepts

2、 Define sap schemas

3、 Define personnel calculation rules

展开全文


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有